package com.cskaoyan.javase.oop1._7constructor._3notice;

/**
 * 注意事项:
 *      1.构造器的作用是在创建对象的过程中给对象的成员变量赋值的
 *          构造器不是用来创建对象的,构造器是用来赋值的
 *
 *      2.同类中的多个构造器是方法重载的关系
 *          但是要切记形参名字不同 不构成方法重载
 *
 *      3.构造器都是用来给成员变量赋值的
 *          遵循"专人专用"方法也是一样,一个方法就做应该做的事情
 *          构造器当中不要乱写代码
 *          尤其不要写业务代码进去
 *          正常情况下,构造器就写标准格式就可以了!自动生成就可以了!
 *          如果构造器确实在创建对象时,需要一些初始化的代码
 *          那就把初始化的代码写进一个成员方法(init)中
 *          然后在构造器调用这个方法
 *          要保证构造器代码的简洁性
 *
 *       4.构造器的执行和类加载
 *          构造器是每new一次对象,就执行一次
 *          但是某个类的类加载,最多执行一次
 *
 *
 * @since 10:51
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        Student s1 = new Student("张三");
        Student s2 = new Student("张三");
        Student s3 = new Student("张三");
    }
}

class Student {
    String name;
    String grade;

    public Student(String name) {
        this.name = name;
        System.out.println("hello  world!");
    }

    public Student() {
        // 确实有必要写业务代码或者复杂的逻辑
        init();
    }

    public void init() {
        // 业务逻辑代码
    }

    /*public Student(String grade) {
        this.grade = grade;
    }*/
}
